查看原文
其他

AI推动基础设施前沿:内存是关键(Meta)

常华Andy Andy730
2025-01-01
  • 题目:AI: Pushing Infra boundaries - Memory is a key factor

  • 演讲者:Manoj Wadekar, Hardware Systems Technologist, Meta

  • 会议:SNIA Compute, Memory, and Storage Summit

  • 日期:2024年5月22日

众所周知,Meta的使命是为世界建立联结,让世界更加紧密地联系在一起。我们通过一系列应用程序实现这一目标,其中包括广为人知的Facebook、Instagram、Messenger和WhatsApp。如今,Meta的应用程序家族日活用户数超过31.9亿,月活用户数更是接近40亿。因此,我们肩负着为这一庞大的用户群体提供高效基础设施的重任。

将目标与AI的应用场景相结合,深入探讨对基础设施的需求。Meta的主要AI应用场景主要集中在两个方面:
  • 个性化推荐:通过深度学习模型训练和推理,为用户提供个性化的社交体验,提升用户社交体验。
  • 生成式AI:为编码创造更丰富的体验,并在整个行业中促进其他研究和商业应用的落地。

所有这些应用场景都呈现出快速增长的趋势,并对基础设施的需求提出了严峻挑战。

深入探讨AI对基础设施的需求与传统计算基础设施的根本性差异,后者长期以来应用于超大规模数据中心。

AI作为一种用例,对基础设施提出了迥异于传统计算的需求。传统计算应用程序通常由数百万个小型无状态应用程序组成,其中任何一个应用程序出现故障都不会影响整体应用程序的运行。这也是我们为传统用例优化基础设施的方式。

然而,大型AI应用则截然不同,它们通常在GPU或加速器集群上作为一个单一任务运行。因此,AI任务的失败代价高昂。例如,一个运行数周或数月的训练任务,即使只有一块GPU出现故障,也需要重新启动,导致整个任务遭受重大影响。此外,AI任务的性能还依赖于集群中所有组件的协同工作,因此需要更紧密的硬件和软件协同设计以确保最佳性能。

值得注意的是,许多组件技术遵循平台节奏运行,即通用计算受通用CPU路线图驱动。然而,AI的需求增长速度远超平台节奏,我们预计这种快速增长的需求将对支持AI系统的组件造成压力。这涉及所有系统组件、所有网络组件和所有数据中心组件。

总体而言,AI系统的重心已经从传统计算系统中的CPU转移到了GPU加速器。AI需求的指数级增长显著改变了数据中心基础设施的设计挑战,推动了以GPU为中心的设计发展。

理想情况下,人们希望拥有最强大的加速器系统来运行整个AI任务,因为,AI任务作为一个单一实体运行。因此,直接获取最大的加速器似乎是合乎逻辑的选择。然而,这并非始终可行,因为随着模型大小的增加,需要以集群方式不断扩展加速器。因此,对于训练任务,集群规模至关重要。

有多种集群方法可以实现更高的性能。一种方法是将张量或上下文并行化以在多个GPU上运行。紧密耦合的集群允许这些张量和上下文并行运行,然后在Scale-up集群之上再构建一层松散耦合的集群,用于并行化数据和管道。这种方法使得大型AI任务可以在AI集群上运行,并通过优化执行的各个部分来确保性能的可伸缩性。

从网络角度,探讨实现这种Scale-up和Scale-out需要付出的代价。

使用Scale-up网络的紧密耦合任务需要极高的带宽和最低延迟。目前,一些基于加载和存储的互连技术(例如NVSwitch和Infinity Fabric)或基于消息的互连技术(例如RoCE)可以提供非常高的带宽和低延迟。

对于数据并行等松散耦合任务,Scale-out网络需要比典型的前端网络高得多的带宽,但与Scale-up网络相比略微宽松。这些网络通常是基于RDMA的,例如RoCE或InfiniBand。

Scale-up网络对更高带宽的需求正在推动距离的物理极限,并催生紧密连接的集群拓扑。例如,如何确保每条链路的传输速度达到200Gbps 或400Gbps?根据我们遇到的距离限制,这将继续推动加速器更加紧密地相互靠近。Scale-up互连网络需要承载大量内存访问,因为紧密耦合的系统将通过网络驱动非常高的带宽和低延迟需求。这也对整体系统设计产生了影响。

对于Scale-out网络,随着系统扩展到更大的拓扑结构,会出现一些额外的挑战。如何保持高有效带宽,同时避免热点和拥塞,以确保P99或尾延迟稳定?这取决于工作负载和应用程序的类型。来看看这些应用程序的特点,以及它们如何影响整体系统设计。

AI系统的需求呈现出显著的多样性,根据这些用例可以分为两大类:推荐系统和GenAI。
  • 推荐系统:包括训练和推理,还包括重新训练和预推理。
  • GenAI:包括训练和推理,可以进一步细分为预训练(在语言模型中获取第一个标记)和解码(获取后续标记)。

这些用例具有显著不同的需求。当我们将这些各种模型对资源的需求叠加在一起时,整体系统设计的优化对于TCO来说是一项极具挑战性的工作。AI用例推动着构建更大的加速器、紧密耦合的系统以及不断增长的模型大小和性能需求,将AI系统和组件推向了超出传统增长轨迹的领域。

更专注于需求中的内存部分。内存为何重要?究竟是什么因素推动了内存需求的增长?

理想情况下,为了运行单个任务,只有一个单一的加速器将是极好的。然而,这并非总是可行的,我们需要将多个加速器集成在一起。随着模型规模的不断增长,为了确保Scale-up集群仍然处于可行的范围内,我们需要每个加速器变得越来越强大。因此,持续提升加速器大小具有十分重要的意义。

随着加速器大小的增加,内存容量和性能也需要随之提升,以满足集成在加速器内部的内存(通常称为高带宽内存,HBM)对带宽的需求。HBM通常集成在芯片封装中,以提供更高的带宽。此外,加速器尺寸的增长也带来了额外的可靠性挑战。任务失败的成本高昂。

因此,关于加速器的内存容量和带宽需求,首要任务是确保像HBM这样的集成内存技术能够持续发展,以满足容量、性能和可靠性的需求。

“内存墙”是一个经常被提及的话题。模型大小和加速器性能的增长导致了对内存的需求超出嵌入式HBM的容量和带宽限制。我们不断提升GPU的性能,但现有的HBM容量和互连带宽显然无法跟上。因此,对加速器性能的需求正在远远超出图中所展现的范围。因此,这些需求正在急剧增长,这将使网络和内存容量更难满足发展需求。

随着制造这些大型加速器,紧密耦合的Scale-up集群的需求实际上呈指数增长,而非线性增长,更高的带宽也需要跟上。同时,还需要确保延迟保持在较低水平。这正在将超大型数据中心推向极限,因为加速器规模的不断扩大会导致功耗大幅增加。为了确保集群的规模化,需要考虑机架中可以容纳多少加速器,以及如何确保给它们提供足够的功率。

因此,我们需要关注以下几个方面:加速器性能、连接的内存容量、为加速器提供的内存性能、机架中可以容纳的加速器数量、机架功耗、连接这些高性能加速器的网络带宽、Scale-up网络和Scale-out集群中可实现的网络延迟、如何管理这些网络以及我们支持的网络类型。此外,还需要确保集群可靠性,这意味着参与作业的集群中所有组件的可靠性。所有这些因素都在推动数据中心的极限。

哪些组件会增加AI作业每个加速器所需的总内存量?从大类上看,一个因素是前向和反向传播过程中计算的激活。如果这些激活超出了内存的内部容量,那么典型的技术是在反向传播期间重新计算它们。这导致了加速器计算和内存之间的一种权衡。

模型参数和嵌入也在增加到更大的值,通常无法容纳在GPU的内部HBM内存中。但是,由于访问模式的原因,我们可以使用局部性和分层内存访问以及适当的预取技术,将它们正确地放置在两个内存层之间。

此外,还有一些额外的加速器内存用途,例如梯度、权重、优化器状态等。所有这些都会增加加速器的本地内存需求。

由于在各种故障情况下完成作业至关重要,因此需要使用检查点来允许在失败后重新启动作业。通过使用检查点,可以显著提高效率,而不会丢失已执行作业的所有时间。当然,这也会占用内存。我们正在积极探索如何更有效地进行检查点等操作。

总而言之,激活、嵌入、梯度等因素共同推动了对内存的需求增长,而HBM内存的容量增长速度跟不上。因此,HBM内存的容量已经落后于加速器的需求,我们需要考虑如何扩展内存以及可以实现的方法,以确保内存性能能够满足加速器的需求。

因此,下一步的选择基本上是采用某种分层架构。我们可以将HBM用作第一层内存,然后提供第二层内存供加速器访问。这将允许更高的容量和相对较低的带宽,与现有的HBM内存带宽相比。

对于AI工作负载,可以使用HBM满足其带宽需求,然后将容量扩展到第二层内存。这样,我们可以将两者结合起来,以满足AI工作负载和整个AI集群的需求。

那么,如何实现分层内存架构呢?最简单、最优的选择是利用现有的CPU和加速器连接,通过CPU扩展内存,使加速器能够访问连接到CPU的内存作为第二层扩展容量。

CPU和GPU之间已经存在高带宽互连,这对于满足所需的内存带宽至关重要。因此,当扩展更多内存时,显然需要更高的带宽来确保访问该内存。目前可用的技术包括PCIe、CXL和NVLink-C2C,后者是一种通过内存进行扩展的新方案。Infinity Fabric也是这方面众所周知的技术。

大量研究表明,如果使用连接到CPU的内存并通过加速器和CPU之间的连接进行访问,可以显著提升性能。我们已经提供了相关信息并进行了演示。

如果扩展发生在节点内部(“节点本地”指的是包含CPU和GPU的节点),我们可以直接向加速器添加内存,以扩展该节点内的内存,这可以使用任何扩展互连来实现,例如CXL或其他允许内存连接性的互连技术。

深入探讨一下节点本地内存(面向节点的内存)在被fabric连接后会发生什么。在这种情况下,节点本地内存直接连接到系统内部的CPU或GPU。为了实现这一点,必须确保在每个组件交互点解决带宽和容量问题。

首先,加速器和CPU之间的互连必须具有高带宽,同时不会加剧已经受限的加速器的压力。从这个意义上说,需要提供足够的带宽,但同时也要尽量减少服务数量,以实现更高的有效带宽。这意味着服务必须以一种不会对加速器造成过大负担的方式实现所需的带宽。

举个例子,假设我们需要实现一个分层架构,其带宽是HBM带宽的十分之一。如果HBM带宽为每秒8到10TB,那么第二层内存的带宽必须为其十分之一,也就是每秒1TB或更高。因此,如果进行计算,就会发现,为了尽量减少对CXL、PCIe或任何其他互连架构的压力,需要尽量减少使用的服务数量,因为随着时间的推移,这个数字会不断增长。因此,CXL和PCIe在这种情况下面临着挑战。

为了满足未来几年加速器的需求,我们需要更高的PCIe Gen 7速度。此外,一旦数据传输到CPU,带宽需求必须通过CPU上的内存通道数量来匹配内存通道的速度。因此,需要考虑内存通道数量以及放置的内存模块的速度。为了满足加速器的带宽和容量需求,我们需要更高速度和更大容量的DIMM。

因此,为了实现更高的容量和满足加速器的带宽需求,我们需要分层内存架构。现在,我们可以考虑将内存连接到fabric上。我们已经讨论了fabric的可扩展性,它具有非常高的带宽。因此,目前在紧密耦合的系统中,我们可以将内存附加到加速器之间或直接连接到fabric本身,以供加速器访问。

此外,在实现上述架构之前,我提到的允许加速器之间访问内存的互连技术已经广泛应用。这些技术包括用于负载存储连接的互连,例如NVLink和Infinity Fabric,以及用于消息传递的互连,例如RDMA和RoCE。CXL也可用于此目的。然而,我们需要满足这种Scale-up网络对性能和延迟的要求。

为了实现这一点,探讨一下启用fabric附加内存或内存互连技术的含义。目前,供应商提供了一些专有技术,例如NVLink和Infinity Fabric,可实现负载存储访问。CXL是一种开放的fabric,可实现加速器之间以及加速器与内存之间的负载存储访问。然而,CXL在性能、延迟和对快速变化的AI需求的响应速度方面落后于NVLink、Infinity Fabric和以太网等成熟技术,因为它建立在庞大的PCIe系统基础之上。但是,CXL是目前可用的开放选择,如果能够克服这些挑战,它有可能成为一个很有吸引力的选择。

加速器到加速器的内存访问为我们今天讨论的Scale-up网络奠定了基础。可以预见,未来可以将内存添加到这些fabric或这些Scale-up fabric中,因为它们已经具有高带宽和低延迟,并且可能会启用新型用例。

例如,可以进行近内存计算。是否可以将任何类型的计算应用卸载到内存,从GPU跨越到内存?我们讨论的内存检查点也具有潜在的新用例。所有这些都有可能提高未来AI工作的可靠性和性能。

总而言之,AI正在推动对HBM、DIMM技术以及用于容量和互连的互连的需求,这将需要大量的创新。我们将使用这些技术和产品,AI用例将继续推动这一趋势。为了满足这些需求、用例、基准测试和共享知识,我们需要新的标准、系统设计和行业合作。

各种标准组织正在为此努力。例如,OCP正在开展可组合内存系统项目,这是一个大型社区共同致力解决该问题的项目。因此,对于所有相关人员来说,吸引人的地方在于通过与SNIA、JEDEC、CXL和OCP合作,共同应对这些令人兴奋和艰巨的挑战,确保我们为基础架构面临的所有AI挑战做好准备。


--【本文完】---

近期受欢迎的文章:

  1. Celestial AI突破“内存墙”限制,将HBM与DDR5进行融合

  2. AI计算能力限制:CoWoS和HBM供应链的挑战

  3. 利用CXL技术,提升AI和HPC性能

  4. 内存技术引领计算架构重大变革

  5. AI芯片市场未来五年预测:万亿规模,四巨头主导



更多交流,可添加本人微信

(请附姓名/单位/关注领域)

继续滑动看下一个
Andy730
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存